/*
* pps_bom
*/
package com.pitop.product.service;

import com.pitop.core.entity.Page;
import com.pitop.core.exceptions.BaseException;
import com.pitop.core.exceptions.ProductBomException;
import com.pitop.product.api.ProductBomFeignApi;
import com.pitop.product.entity.ProductBom;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 * 销售bom关联
 *
 * @author berton
 */
@Service("productBomSVImpl")
@Slf4j
public class ProductBomSVImpl {

    @Autowired
    private ProductBomFeignApi productBomFeignApi;

    /**
     * 加载一个对象ProductBom
     *
     * @param id * @param productCode 成品编码* @param bomCode bom编码
     * @return ProductBom
     */
    public ProductBom load(Long id, String productCode, String bomCode) {
        if (id == null && productCode == null && bomCode == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        return productBomFeignApi.load(id, productCode, bomCode);
    }

    /**
     * 加载一个对象ProductBom 通过id,(将查询关联数据)
     *
     * @param id
     * @return ProductBom
     */
    public ProductBom loadById(Long id) {
        if (id == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        return productBomFeignApi.loadById(id);
    }

    /**
     * 加载一个对象ProductBom 通过productCode,(将查询关联数据)
     *
     * @param productCode 成品编码
     * @return ProductBom
     */
    public ProductBom loadByProductCode(String productCode) {
        if (productCode == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        return productBomFeignApi.loadByProductCode(productCode);
    }

    /**
     * 加载一个对象ProductBom 通过bomCode,(将查询关联数据)
     *
     * @param bomCode bom编码
     * @return ProductBom
     */
    public ProductBom loadByBomCode(String bomCode) {
        if (bomCode == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        return productBomFeignApi.loadByBomCode(bomCode);
    }

    /**
     * 加载一个对象ProductBom,(将查询关联数据)
     *
     * @param id * @param productCode 成品编码* @param bomCode bom编码
     * @return ProductBom
     */
    public ProductBom get(Long id, String productCode, String bomCode) {
        if (id == null && productCode == null && bomCode == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        return productBomFeignApi.get(id, productCode, bomCode);
    }

    /**
     * 加载一个对象ProductBom 通过id,(将查询关联数据)
     *
     * @param id
     * @return ProductBom
     */
    public ProductBom getById(Long id) {
        if (id == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        return productBomFeignApi.getById(id);
    }

    /**
     * 加载一个对象ProductBom 通过productCode,(将查询关联数据)
     *
     * @param productCode 成品编码
     * @return ProductBom
     */
    public ProductBom getByProductCode(String productCode) {
        if (productCode == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        return productBomFeignApi.getByProductCode(productCode);
    }

    /**
     * 加载一个对象ProductBom 通过bomCode,(将查询关联数据)
     *
     * @param bomCode bom编码
     * @return ProductBom
     */
    public ProductBom getByBomCode(String bomCode) {
        if (bomCode == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        return productBomFeignApi.getByBomCode(bomCode);
    }

    /**
     * 删除对象ProductBom
     *
     * @param id * @param productCode 成品编码* @param bomCode bom编码
     */

    public void delete(Long id, String productCode, String bomCode) {
        if (id == null && productCode == null && bomCode == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        productBomFeignApi.delete(id, productCode, bomCode);
    }

    /**
     * 查询ProductBom分页
     *
     * @param productBom 对象
     * @param curPage    当前页
     * @param pageSize   分页条数
     * @return List<ProductBom>
     */
    public List<ProductBom> list(ProductBom productBom, int curPage, int pageSize) {
        return productBomFeignApi.list(productBom, curPage, pageSize);
    }

    /**
     * 查询ProductBom分页
     *
     * @param id       * @param productCode  成品编码* @param bomCode  bom编码
     * @param curPage  当前页
     * @param pageSize 分页条数
     * @return List<ProductBom>
     */
    public List<ProductBom> list(Long id, String productCode, String bomCode, int curPage, int pageSize) {
        if (curPage < 0) {
            curPage = 1;
        }

        if (pageSize < 0) {
            pageSize = Page.limit;
        }

        ProductBom productBom = new ProductBom();
        productBom.setId(id);
        productBom.setProductCode(productCode);
        productBom.setBomCode(bomCode);

        return productBomFeignApi.list(productBom, curPage, pageSize);
    }

    public int count(Long id, String productCode, String bomCode) {
        return productBomFeignApi.count(id, productCode, bomCode);
    }

    public int count(ProductBom productBom) {
        return productBomFeignApi.count(productBom);
    }

    /**
     * 保存
     *
     * @param productBom 实体
     * @throws BaseException
     */
    public void save(ProductBom productBom) {
        if (productBom == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        productBomFeignApi.build(productBom);
    }

    /**
     * 更新
     *
     * @param productBom 实体
     * @throws BaseException
     */
    public void modify(ProductBom productBom) {
        if (productBom == null) {
            throw new ProductBomException(BaseException.BaseExceptionEnum.Illegal_Param);
        }
        productBomFeignApi.modify(productBom);
    }
}
